/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package de.kundepro.example.vaadin;

import de.kundepro.example.vaadin.entities.FirmaRechtsformen;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.event.MouseEvents.ClickEvent;
import com.vaadin.ui.*;
import com.vaadin.ui.Table;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
import java.util.ArrayList;

/**
 *
 * @author Andreas
 */
public class CompanyDetail {

    long id;
    Window subWinCompDetail;
    private static final IndexedContainer pers_container_standort = new IndexedContainer();
    final VerticalLayout fd1 = new VerticalLayout();
    final VerticalLayout fd2 = new VerticalLayout();
    final VerticalLayout fd3 = new VerticalLayout();
    final VerticalLayout fd4 = new VerticalLayout();
    final VerticalLayout fd5 = new VerticalLayout();
    GridLayout detObenLinks = new GridLayout(2, 8);
    HorizontalLayout detObenRechts = new HorizontalLayout();
    HorizontalLayout detailsOben = new HorizontalLayout();
    HorizontalLayout detailsUnten = new HorizontalLayout();
    ArrayList<Firma> firma = new ArrayList<Firma>();
    Table Pers_Standort = new Table();
    GridLayout Grid1 = new GridLayout(2, 6);
    GridLayout Grid2 = new GridLayout(2, 5);
    GridLayout Grid3 = new GridLayout(2, 4);
    GridLayout Grid4 = new GridLayout(2, 3);
    ArrayList gewaehlt = new ArrayList();
    TextField tf_Kategorien = new TextField();
    private TabSheet tab_firm;
    classFirmenDetails cfd = new classFirmenDetails();
    ArrayList<FirmaEinheiten> companyDetails = new ArrayList<FirmaEinheiten>();
    ArrayList<FirmaRechtsformen> recht = new ArrayList<FirmaRechtsformen>();
    Label lb_Firmenname = new Label("Firmenname:");
    Label lb_Rechtsform = new Label("Rechtsform:");
    Label lb_Zusatz = new Label("Zusatz zum Namen:");
    Label lb_Webseite = new Label("Webseite:");
    Label lb_Branche = new Label("Branche:");
    Label lb_Kategorien = new Label("Kategorien:");
    Label lb_Groesse = new Label("Größe nach BGKL:");
    Label lb_Klassifizierung = new Label("Klassifizierung:");
    Label lb_PostfachNr = new Label("Postfach-Nr:");
    Label lb_Plz_Postfach = new Label("PLZ (Postfach):");
    Label lb_Ort_Postfach = new Label("Ort (Postfach):");
    Label lb_Bezeichnung = new Label("Bezeichnung:");
    Label lb_Gebaeude = new Label("Gebäude etc.:");
    Label lb_Strasse = new Label("Straße:");
    Label lb_Plz = new Label("PLZ:");
    Label lb_Ort = new Label("Ort:");
    Label lb_Land = new Label("Land:");
    Label lb_Email = new Label("Email:");
    Label lb_telZentrale = new Label("Tel. Zentrale:");
    Label lb_faxZentrale = new Label("Fax Zentrale:");
    Label lb_Webseite2 = new Label("Webseite 2:");
    Label lb_Firma = new Label("Firma:");
    Label lb_Gebaeude2 = new Label("Gebäude etc.:");
    Label lb_Strasse_Postfach = new Label("Straße / Postf.:");
    Label lb_Plz2 = new Label("PLZ:");
    Label lb_Ort2 = new Label("Ort:");
    TextField tf_Firmenname = new TextField();
    ComboBox cb_Rechtsform = new ComboBox();
    TextField tf_Zusatz = new TextField();
    TextField tf_Webseite = new TextField();
    ComboBox cb_Branche = new ComboBox();
    ComboBox cb_Groesse = new ComboBox();
    ComboBox cb_Klassifizierung = new ComboBox();
    TextField tf_Bezeichnung = new TextField();
    TextField tf_Gebauede = new TextField();
    TextField tf_Strasse = new TextField();
    TextField tf_Ort = new TextField();
    TextField tf_Plz = new TextField();
    TextField tf_Land = new TextField();
    TextField tf_Firma = new TextField();
    TextField tf_Gebaeude2 = new TextField();
    TextField tf_Strasse_Postfach = new TextField();
    TextField tf_Plz2 = new TextField();
    TextField tf_Ort2 = new TextField();
    TextField tf_Email = new TextField();
    TextField tf_telZentrale = new TextField();
    TextField tf_faxZentrale = new TextField();
    TextField tf_Webseite2 = new TextField();
    TextField tf_PostfachNr = new TextField();
    TextField tf_Plz_Postfach = new TextField();
    TextField tf_Ort_Postfach = new TextField();
    Button speichern = new Button();

    public CompanyDetail(classFirmenDetails cfd) {
                    this.cfd = cfd;
        firma = cfd.getFirma();
        companyDetails = cfd.getFirmaEinheiten();

         if(firma.size()>0){
              tf_Firmenname.setValue(firma.get(0).getFiName());
        }
          if (companyDetails.size() > 0) {

            tf_Bezeichnung.setValue(companyDetails.get(0).getFiEinheitBezeichnungen());
            tf_Strasse.setValue(companyDetails.get(0).getFiAdresseZeile1());
            tf_Ort.setValue(companyDetails.get(0).getFiOrt());
            tf_Plz.setValue(companyDetails.get(0).getFiPLZ());
            tf_Bezeichnung.setValue(companyDetails.get(0).getFiEinheitBezeichnungen());
            tf_Email.setValue(companyDetails.get(0).getFiEmail());
            tf_telZentrale.setValue(companyDetails.get(0).getFiTelefon());
            tf_faxZentrale.setValue(companyDetails.get(0).getFiFax());
//            tf_Firma.setValue(companyDetails.get(0).get)
            tf_Strasse_Postfach.setValue(companyDetails.get(0).getFiRechnungAdresseZeile1());
            tf_Plz2.setValue(companyDetails.get(0).getFiRechnungAdressPLZ());
            tf_Ort2.setValue(companyDetails.get(0).getFiRechnungAdressOrt());


          }

    }

    public Window oeffneFirmenDetails() {




        subWinCompDetail = new Window("Firmen-Details");
        subWinCompDetail.setModal(true);

        subWinCompDetail.setWidth("850px");
        subWinCompDetail.setHeight("700px");



        detailsUnten.setSpacing(true);

        Pers_Standort.setWidth("350px");
        Pers_Standort.setHeight("273px");

        pers_container_standort.addContainerProperty("Person", String.class, null);
        pers_container_standort.addContainerProperty("Telefon", String.class, null);
        pers_container_standort.addContainerProperty("Email", String.class, null);

        Pers_Standort.setContainerDataSource(pers_container_standort);



        detailsOben.setSpacing(true);
        detObenLinks.setSpacing(true);
        detObenRechts.setSpacing(true);
        Grid1.setSpacing(true);
        Grid2.setSpacing(true);
        Grid3.setSpacing(true);
        Grid4.setSpacing(true);


        tf_Firmenname.setRows(2);
        tf_Firmenname.setWidth("200px");



//        cb_Rechtsform.setValue(recht.get(0).getFiRechtsform());


        cb_Rechtsform.setWidth("200px");
        tf_Zusatz.setWidth("200px");
        tf_Webseite.setWidth("200px");
        cb_Branche.setWidth("200px");
        cb_Groesse.setWidth("200px");
        cb_Klassifizierung.setWidth("200px");



        gewaehlt.add(0, "Brandschutz");
        gewaehlt.add(1, "TGS");


        tf_Kategorien.setRows(5);
        String KatAusgabe = "";
        for (int f = 0; f < gewaehlt.size(); f++) {
            KatAusgabe += gewaehlt.get(f) + "\n";
        }
        tf_Kategorien.setValue(KatAusgabe);



        detObenLinks.addComponent(lb_Firmenname);
        detObenLinks.addComponent(tf_Firmenname);
        detObenLinks.addComponent(lb_Rechtsform);
        detObenLinks.addComponent(cb_Rechtsform);
        detObenLinks.addComponent(lb_Zusatz);
        detObenLinks.addComponent(tf_Zusatz);
        detObenLinks.addComponent(lb_Webseite);
        detObenLinks.addComponent(tf_Webseite);
        detObenLinks.addComponent(lb_Branche);
        detObenLinks.addComponent(cb_Branche);
        detObenLinks.addComponent(lb_Groesse);
        detObenLinks.addComponent(cb_Groesse);
        detObenLinks.addComponent(lb_Klassifizierung);
        detObenLinks.addComponent(cb_Klassifizierung);

        detObenRechts.addComponent(lb_Kategorien);
        detObenRechts.addComponent(tf_Kategorien);
        detailsOben.addComponent(detObenLinks);
        detailsOben.addComponent(detObenRechts);

        subWinCompDetail.addComponent(detailsOben);

        fd1.setMargin(true);
        fd2.setMargin(true);
        fd3.setMargin(true);
        fd4.setMargin(true);
        fd5.setMargin(true);


//        tf_Bezeichnung.setValue(firma.get(0).);

        tf_Bezeichnung.setWidth("200px");
        tf_Gebauede.setWidth("200px");
        tf_Strasse.setWidth("200px");
        tf_Ort.setWidth("200px");
        tf_Plz.setWidth("200px");
        tf_Land.setWidth("200px");
        tf_Firma.setWidth("200px");
        tf_Gebaeude2.setWidth("200px");
        tf_Strasse_Postfach.setWidth("200px");
        tf_Plz2.setWidth("200px");
        tf_Ort2.setWidth("200px");
        tf_Email.setWidth("200px");
        tf_telZentrale.setWidth("200px");
        tf_faxZentrale.setWidth("200px");
        tf_Webseite2.setWidth("200px");
        tf_PostfachNr.setWidth("200px");
        tf_Plz_Postfach.setWidth("200px");
        tf_Ort_Postfach.setWidth("200px");


        tab_firm = new TabSheet();
        tab_firm.addTab(fd1, "Anschrift", null);
        tab_firm.addTab(fd2, "Rechnungsanschrift", null);
        tab_firm.addTab(fd3, "Telefon Email", null);
        tab_firm.addTab(fd4, "Postfach", null);
        tab_firm.addTab(fd5, "Info", null);




        Grid1.addComponent(lb_Bezeichnung);
        Grid1.addComponent(tf_Bezeichnung);
        Grid1.addComponent(lb_Gebaeude);
        Grid1.addComponent(tf_Gebauede);
        Grid1.addComponent(lb_Strasse);
        Grid1.addComponent(tf_Strasse);
        Grid1.addComponent(lb_Plz);
        Grid1.addComponent(tf_Plz);
        Grid1.addComponent(lb_Ort);
        Grid1.addComponent(tf_Ort);
        Grid1.addComponent(lb_Land);
        Grid1.addComponent(tf_Land);

        fd1.addComponent(Grid1);

        Grid2.addComponent(lb_Firma);
        Grid2.addComponent(tf_Firma);
        Grid2.addComponent(lb_Gebaeude2);
        Grid2.addComponent(tf_Gebaeude2);
        Grid2.addComponent(lb_Strasse_Postfach);
        Grid2.addComponent(tf_Strasse_Postfach);
        Grid2.addComponent(lb_Plz2);
        Grid2.addComponent(tf_Plz2);
        Grid2.addComponent(lb_Ort2);
        Grid2.addComponent(tf_Ort2);

        fd2.addComponent(Grid2);

        Grid3.addComponent(lb_Email);
        Grid3.addComponent(tf_Email);
        Grid3.addComponent(lb_telZentrale);
        Grid3.addComponent(tf_telZentrale);
        Grid3.addComponent(lb_faxZentrale);
        Grid3.addComponent(tf_faxZentrale);
        Grid3.addComponent(lb_Webseite2);
        Grid3.addComponent(tf_Webseite2);

        fd3.addComponent(Grid3);

        Grid4.addComponent(lb_PostfachNr);
        Grid4.addComponent(tf_PostfachNr);
        Grid4.addComponent(lb_Plz_Postfach);
        Grid4.addComponent(tf_Plz_Postfach);
        Grid4.addComponent(lb_Ort_Postfach);
        Grid4.addComponent(tf_Ort_Postfach);
        fd4.addComponent(Grid4);

        detailsUnten.addComponent(tab_firm);
        detailsUnten.addComponent(Pers_Standort);

        speichern.addListener(new Button.ClickListener() {

            public void buttonClick(Button.ClickEvent event) {
           
                tmpDataAccessObject1 test = new tmpDataAccessObject1();
                test.setCompanyDetails(getStandortDaten());
                
            }
        });

        detailsUnten.addComponent(speichern);
        subWinCompDetail.addComponent(detailsUnten);




        return subWinCompDetail;
    }

    public FirmaEinheiten getStandortDaten() {
        FirmaEinheiten firE = new FirmaEinheiten();

        firE.setFiEiID(companyDetails.get(0).getFiEiID());
        firE.setFiAdresseZeile1(tf_Strasse.getValue().toString());
        firE.setFiEinheitBezeichnungen(tf_Bezeichnung.getValue().toString());
        firE.setFiOrt(tf_Ort.getValue().toString());
        firE.setFiPLZ(tf_Plz.getValue().toString());
        firE.setFiEmail(tf_Email.getValue().toString());
        firE.setFiTelefon(tf_telZentrale.getValue().toString());
        firE.setFiFax(tf_faxZentrale.getValue().toString());
        firE.setFiRechnungAdresseZeile1(tf_Strasse_Postfach.getValue().toString());
        firE.setFiRechnungAdressPLZ(tf_Plz2.getValue().toString());
        firE.setFiRechnungAdressOrt(tf_Ort2.getValue().toString());

        return firE;
    }
}
